/*
 * KmyVector.h
 *
 *  Created on: 2012-9-23
 *      Author: kamiya
 */

#ifndef __KMY_VECTOR_H_
#define __KMY_VECTOR_H_

#include "KmyTypedef.h"

typedef struct ST_VectorNode{
	void* value;
	ST_VectorNode* pre;
	ST_VectorNode* next;
}ST_VectorNode;

class KmyVector {
public:
	KmyVector();
	virtual ~KmyVector();

	// function
	int getSize();
	void clear();
//	/**
//	 * 当前节点指向头节点
//	 */
//	void resetPointer();
//	/**
//	 * 获取当前节点的值
//	 */
//	void* getCurValue();
//	/**
//	 *
//	 */
//	void* getNextValue();
//	/**
//	 * 获取当前节点的值，cur_node指向下一个节点
//	 */
//	void* getValueNext();
//
	/**
	 * 添加节点
	 */
	void addValue(void* value);
	/**
	 * 删除节点
	 */
	void removeValue(void* value);
	void removeNode(ST_VectorNode* node);
//	void removeCurValue();
//	void removeNextValue();

    /**
     * 查找节点
     *   return true false
     */
    bool findValue(void* value);

    /** 获取第index个值 */
    void* getValueByIndex(int index);

	/**
	 * 用作双循环时使用
	 */
	ST_VectorNode* getHead();
	ST_VectorNode* getTail();
	ST_VectorNode* head;
	ST_VectorNode* tail;
	int size;
//private:
	/**
	 * 当前节点（用来getValueNext()）
	 */
//	ST_VectorNode* cur_node;
//	ST_VectorNode* pre_node;
};

#endif /* KMYVECTOR_H_ */
